Dubbo 快速入门使用教程

目录:

Dubbo 介绍

dubbo 2.x版本官方文档
https://cn.dubbo.apache.org/zh-cn/docsv2.7/

Apache Dubbo 是一款 RPC(Remote Procedure Call 远程过程调用)服务开发框架,提供了远程调用方案和服务治理方案。

Dubbo 发展历程

Dubbo 架构

Dubbo 快速入门使用教程

调用过程

  1. 服务容器负责启动,加载,运行服务提供者。

  2. 服务提供者在启动时,向注册中心注册自己提供的服务。

  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。

  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

Dubbo 入门使用

文中涉及到的安装包和代码示例,需要的请关注【Qin的学习营地】,回复【dubbo入门使用教程

一、Zookeeper 注册中心安装启动

这里下载 Zookeeper 3.6.4 版本的并在 windows 下启动。

下载对应安装包后解压,进入 bin 目录,找到 zkServer.cmd。在启动之前,可以打开 zkServer.cmd 文件,在后面添加 pause,可以在出错时不会闪退,方便查看错误原因。

Dubbo 快速入门使用教程

双击 zkServer.cmd 启动,这里启动会报如下的错,这个错误信息是提示缺少一个 zoo.cfg 文件。

Dubbo 快速入门使用教程

进入 config 目录下,可以看到有一个 zoo_sample.cfg 文件,这个文件不会生效,需要改成 zoo.cfg,在这里复制一份改为 zoo.cfg 配置文件,重新启动即可生效。  这里顺带配置一下 zoo.cfg 配置文件,配置 dataDir = F:\download,指定数据目录位置。

继续点击 zkServer.cmd 启动,发现还是报错,提示找不到 org.apache.zookeeper.server.quorum.QuorumPeerMain 启动类。

Dubbo 快速入门使用教程

这里主要是因为下载版本的问题,之前下载的是源码版本,现在重新下载二进制版本,启动成功了。

二、服务提供方

使用 spring boot 整合 dubbo 实现。

1、引入依赖

<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>${dubbo.version}</version>
</dependency>

<!--zookeeper 注册中心客户端引入 使用的是curator客户端 -->
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-dependencies-zookeeper</artifactId>
   <version>${dubbo.version}</version>
</dependency>

2、服务提供方实现类

接口:

public interface HelloService {
   String sayHello(String name);
}

实现类:

// @Service: 这是 Dubbo 框架的注解,用于标记一个类为服务提供者。使得 Dubbo 可以自动扫描并将服务发布到注册中心,供消费者发现和调用。
@Service(interfaceClass=HelloService.class, retries=-1, version="1.0.0", timeout = 15000)
public class HelloServiceImpl implements HelloService {

   @Override
   public String sayHello(String name) {
       return "【producer】 Hello, " + name + "!";
  }

}

3、配置文件相关参数

# dubbo-provider.properties
dubbo.application.name=dubbo-provider
## 指定 Dubbo 注册中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
## 指定 Dubbo 服务的协议类型和端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
## 指定需要扫描的基础包,用于查找 Dubbo 服务的实现类。
dubbo.scan.base-packages=com.example.dubbo.producer.service

三、服务消费方

使用 spring boot 整合 dubbo 实现。

1、引入依赖

<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>${dubbo.version}</version>
</dependency>

<!--zookeeper 注册中心客户端引入 使用的是curator客户端 -->
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-dependencies-zookeeper</artifactId>
   <version>${dubbo.version}</version>
</dependency>

2、引用服务提供方暴露的接口

使用服务提供方的dubbo接口:

public class ProducerService {
   // @Reference 是 Dubbo 框架中的一个注解,用于在消费者端标记对 Dubbo 服务的引用。
    // Dubbo 框架会自动为该注解标记的字段或方法参数注入代理对象。这个代理对象封装了底层的远程调用逻辑,使得消费者可以像调用本地方法一样调用远程服务。
   @Reference(retries=-1, version="1.0.0", timeout = 15000)
   private HelloService helloService;

   public String consumerSayHello(String name){
       String hello = helloService.sayHello(name);
       System.out.println("[consumer] "+ hello);
       return hello;
  }
}

3、配置相关参数

# dubbo-consumer.properties
dubbo.application.name=dubbo-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=30880



返回:Dubbo 快速入门使用教程

本文由“公众号文章抓取器”生成,请忽略上文所有联系方式或指引式信息。有问题可以联系:五人工作室,官网:www.Wuren.Work,QQ微信同号1976.424.585